package bz.ziro.kanbe.controller.mng;

import java.util.logging.Logger;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import bz.ziro.kanbe.bean.Pager;

/**
 * ページャー用リスト検索
 * @author Administrator
 */
public abstract class PagerController extends Controller {

    @SuppressWarnings("unused")
    private static final Logger logger = Logger.getLogger(PagerController.class.getName());
	@Override
	protected Navigation run() {

		//全件を取得する
		Integer count = getCount();
		//ページの表示件数を取得
		Integer limit = getLimit();
		//現在のページ数を取得
		String pageNum = requestScope("page");

		//ページャーを生成
		Pager pager = new Pager(count,pageNum,limit);

		//各設定を行う
        requestScope("count",count);
        requestScope("page",pager.getNowPageNum());
        requestScope("maxPage",pager.getMaxPageNum());

		//各データを設定
		return runPager(pager);
	}

	/**
	 * 全件取得
	 * @return
	 */
	protected abstract Integer getCount();
	/**
	 * 表示数を取得
	 * @return
	 */
	protected abstract Integer getLimit();
	
	/**
	 * 処理を行う
	 * @param pager
	 * @return
	 */
	protected abstract Navigation runPager(Pager pager);

	/**
	 * 
	 * @param pager
	 * @return
	 */
	protected String getDebugString(Pager pager) {
       return "カウント:" + pager.getCount() + 
            	"ページ番号:" + pager.getNowPageNum() + 
            	"オフセット:" + pager.getOffset() + 
            	"リミット:" + pager.getLimit() +
            	"最大ページ数:" + pager.getMaxPageNum();
	}
}
